//练习3: 使用帮助函数_average重构avarageDollarValue, 使用函数组合的方式实现
const fp = require('lodash/fp')
const cars = require('./index')

let _average = function (xs) { 
  return fp.reduce(fp.add, 0, xs) / xs.length
} // 无需改动
// 原题
// let avarageDollarValue = function (cars) {
//   let dollar_values = fp.map(function (car) {
//     return car.dollar_value
//   }, cars)
//   return _average(dollar_values)
// }

 // 重构
 /**
 * 生成一个获取cars的pro值的方法
 */
const map = (prop) => {
  return fp.map((car) => { 
    const number = isNaN(car[prop]) ? 0 : car[prop] // 判断不是数字
    return number
  })
}
const avarageDollarValue = (xs) => {
  // map 函数执行的结构， 传递给 _average
  return fp.flowRight(_average, map('dollar_value'))(xs)
}
console.log(avarageDollarValue(cars))

